/*
 * One example for NOI CSP-J Lesson 7:
 * <https://courses.fmsoft.cn/plzs/noijunior-graph-and-graph-theory.html>
 *
 * Author: Vincent Wei
 *  - <https://github.com/VincentWei>
 *  - <https://gitee.com/vincentwei7>
 *
 * Copyright (C) 2025 FMSoft <https://www.fmsoft.cn>.
 * License: GPLv3
 */
#include <iostream>     // std::cout
#include <string>       // std::string
#include <utility>      // std::make_pair
#include <tuple>        // std::tuple, std::make_tuple, std::get

int main()
{
    std::tuple<int,char> first;                             // default
    std::tuple<int,char> second (first);                    // copy
    std::tuple<int,char> third (std::make_tuple(20,'b'));   // move
    std::tuple<long,char> fourth (third);                   // implicit conversion
    std::tuple<int,char,std::string> fifth (10,'a',"ABC");  // initialization
    std::tuple<int,char> sixth (std::make_pair(30,'c'));    // from pair / move

    std::cout << "second contains: " << std::get<0>(second) << " and " <<
        std::get<1>(second) << std::endl;
    std::cout << "third of fifth : " << std::get<2>(fifth) << std::endl;

    std::cout << "sixth contains: " << std::get<0>(sixth);
    std::cout << " and " << std::get<1>(sixth) << '\n';

    return 0;
}
